/* 
 * This program is free software; you can redistribute it and/or modify 
 * it under the terms of the GNU General Public License as published by 
 * the Free Software Foundation; either version 3 of the License, or 
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 
 * for more details.
 * 
 * You should have received a copy of the GNU General Public License along 
 * with this program; if not, write to the Free Software Foundation, Inc., 
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */


#include "spellcheckhighlighter.h"
#include "spellcheck/spellchecker.h"

SpellCheckHighlighter::SpellCheckHighlighter(QObject* parent) : QSyntaxHighlighter(parent)
{
}

SpellCheckHighlighter::SpellCheckHighlighter(QTextDocument* parent) : QSyntaxHighlighter(parent)
{
}

SpellCheckHighlighter::SpellCheckHighlighter(QTextEdit* parent) : QSyntaxHighlighter(parent)
{
}

SpellCheckHighlighter::~SpellCheckHighlighter()
{
}

void SpellCheckHighlighter::highlightBlock(const QString& text)
{
	QTextCharFormat heilGrammatik;
	heilGrammatik.setUnderlineColor(QColor(255, 0, 0));
	heilGrammatik.setUnderlineStyle(QTextCharFormat::SpellCheckUnderline);

	int pos = 0, prevpos = 0;
	QRegExp rx("\\W+");
	do
	{
		pos = rx.indexIn(text, pos);
		if(pos < 0)
			break;
		QString str = text.mid(prevpos, pos - prevpos);
		if(!m_spellchecker->spell(str))
			setFormat(prevpos, pos - prevpos, heilGrammatik);
		pos += rx.matchedLength();
		prevpos = pos;
	} while(pos > 0);
}

void SpellCheckHighlighter::setSpellChecker(Wishmaster::SpellCheckerPtr spellchecker)
{
	m_spellchecker = spellchecker;
}

